//
// File:	EntityManager.hpp
// Author:	Thomas TISSOT-DUPONT
// Login:	<thomas.tissotdupont@free.fr>
//
// Create:	27/01/2010 at 17:37:05
// Purpose:	
//
#ifndef ENTITYMANAGER_HPP
#define ENTITYMANAGER_HPP

#include "IEntityManager.hpp"

class EntityManager : public IEntityManager
{
public:
									EntityManager();
									~EntityManager();

public:
	const tEntList					&GetEntities() const;
	const tEntList					GetEntitiesByClassName(const std::string &classname) const;
	IEntity							*GetEntityByID(unsigned long) const;

public:
	void							AddEntity(IEntity *pEntity);

public:
	void							UpdatePreEntities() const;
	void							UpdatePostEntities() const;
	void							RenderEntities() const;
	
public:
	void							RemoveUnusedEntities();
	void							Clear();

private:
	tEntList						m_entities;
};

#endif //!ENTITYMANAGER_HPP
